package main

import (
	"fmt"
	"time"
)

func main() {
	//只会执行一次,是延迟执行的效果
	timer := time.NewTimer(5 * time.Second)

	//定时执行，每隔一定时间执行一次
	ticker := time.NewTicker(1 * time.Second)

	time.AfterFunc(2*time.Second, func() {
		fmt.Printf("这个方法直接延迟执行一个函数")
	})

	//Since计算两个时间差
	fmt.Printf("现在和刚才查多长时间%s", time.Since(time.Now().Add(-1*time.Second)))

	//创建一个ticker,并且返回 chan
	time.Tick(3)

	fmt.Println("1--------")
	go readTime("ticker", ticker.C)
	go delayDo(timer.C)
	fmt.Println("2--------")

	time.Sleep(100 * time.Second)
}

func delayDo(c <-chan time.Time) {
	<-c
	fmt.Println("timer")
}

func readTime(str string, c <-chan time.Time) {
	for {
		select {
		case <-c:
			t := <-c
			fmt.Print(str)
			fmt.Println(t.Clock())
		default:
			//fmt.Printf("%s,%v\r\n",str,c)
		}
	}
}
